package br.edu.ifrn.os.simulador.processo;

public class Processo {
	protected int PID;
	protected String nome;
	protected Estado estado;
	protected Runnable codigoExecutavel;
	
	protected Processo() {
		super();
	}
	
	public int getPID() {
		return PID;
	}

	public void setPID(int pID) {
		PID = pID;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + PID;
		result = prime * result + ((estado == null) ? 0 : estado.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object objeto) {
		if (this == objeto) return true;
		if (objeto == null)	return false;
		if (getClass() != objeto.getClass()) return false;
		
		Processo other = (Processo) objeto;
		return (PID == other.PID);
		
	}

	public void executar() {
		if (this.codigoExecutavel == null) return;
		this.codigoExecutavel.run();
	}
}
